Qos是訂閱者或發佈者和Broker之間的傳輸服務品質,一共有0、1、2等三個等級。
- QoS 0:最多一次(At most once delivery)
- QoS 1:至少一次(At least once delivery)
- QoS 2:確實一次(Exactly once delivery)
- QoS 0:最多一次(At most once delivery)
射後不理。
訊息的傳遞是根據底層的網路的能力(MQTT v3.1.1/v5.0都是TCP),接收端不會回應ACK,傳送端也不會重傳,所以接收端可能不會收到訊息,例如網路斷線。
- QoS 1:至少一次(At least once delivery)
確保訊息至少傳送一次,當傳送端發送一個訊息,會期待接收端回應PUBACK的訊息,如果一段時間之後沒有收到回應,傳送端會再次發送訊息,直到在限定時間內收到接收端回應PUBACK的訊息。
- QoS 2:確實一次(Exactly once delivery)
最高的服務品質等級,不會丟失訊息亦不會重複發送訊息,使用Qos 2會產生額外的開銷,是最安全也是最慢的服務品質。
- 傳送端傳送訊息。
- 接收端收到之後回應PUBREC訊息,如果傳送端沒有收到PUBREC訊息,會再次傳送帶有DUP(重複)標記的訊息。
- 傳送端收到PUBREC訊息之後會傳送PUBREL訊息。
- 接收端收到PUBREL訊息之後會回應PUBCOMP訊息給傳送端。